package com.cy.dda.service.goodsdiligencing;

import com.cy.dda.model.PageBean;
import com.cy.dda.model.Result;
import com.cy.dda.model.ao.goodsdiligencing.GoodsDiligencingReportAuditAO;
import com.cy.dda.model.dto.mall.PushLoanOrderInfoToDdaDTO;
import com.cy.dda.model.enums.goodsdiligencing.GoodsDiligencingType;
import com.cy.dda.model.query.goodsdiligencing.GoodsDiligencingAdminListQuery;
import com.cy.dda.model.query.goodsdiligencing.GoodsDiligencingListQuery;
import com.cy.dda.model.vo.goodsdiligencing.GoodsDiligencingAdminDetailVO;
import com.cy.dda.model.vo.goodsdiligencing.GoodsDiligencingAdminListVO;
import com.cy.dda.model.vo.goodsdiligencing.GoodsDiligencingListVO;
import com.cy.dda.model.vo.goodsdiligencing.GoodsDiligencingStatusVO;

/**
 * @Description 家具尽调 service 接口
 * @Author tanyilin
 * @Date 2019/8/23 16:37
 */
public interface GoodsDiligencingService {

    /**
     * 新增家具尽调案件
     * @param pushLoanOrderInfoToDdaDTO
     * @return void
     */
    void addGoodsDiligencing(PushLoanOrderInfoToDdaDTO pushLoanOrderInfoToDdaDTO);

    /**
     * 前台-查询家具尽调列表
     * @param query
     * @return com.cy.dda.model.PageBean<com.cy.dda.model.vo.goodsdiligencing.GoodsDiligencingListVO>
     */
    PageBean<GoodsDiligencingListVO> getGoodsDiligencingList(GoodsDiligencingListQuery query);

    /**
     * 前台-查询家具尽调详情
     * @param goodsDiligencingId
     * @return com.cy.dda.model.Result
     */
    Result getGoodsDiligencingDetail(Long goodsDiligencingId);

    /**
     * 前台-查询家具尽调相关状态
     * @param goodsDiligencingId
     * @return com.cy.dda.model.vo.goodsdiligencing.GoodsDiligencingStatusVO
     */
    GoodsDiligencingStatusVO getGoodsDiligencingStatus(Long goodsDiligencingId);

    /**
     * 后台-查询家具尽调列表
     * @param query
     * @return com.cy.dda.model.PageBean<com.cy.dda.model.vo.goodsdiligencing.GoodsDiligencingAdminListVO>
     */
    PageBean<GoodsDiligencingAdminListVO> getGoodsDiligencingAdminList(GoodsDiligencingAdminListQuery query);

    /**
     * 指定分配尽调员
     * @param goodsDiligencingId
     * @param diligencingType
     * @param userId
     * @return void
     */
    void appointDistributeGoodsDiligencing(Long goodsDiligencingId, GoodsDiligencingType diligencingType, Long userId);

    /**
     * 审核家具尽调报告
     * @param auditAO
     * @param managerId
     * @return void
     */
    void doAuditGoodsDiligencingReport(GoodsDiligencingReportAuditAO auditAO, Long managerId);

    /**
     * 后台-家具尽调 详情
     * @param goodsDiligencingId
     * @return com.cy.dda.model.vo.goodsdiligencing.GoodsDiligencingAdminDetailVO
     */
    GoodsDiligencingAdminDetailVO getGoodsDiligencingAdminDetail(Long goodsDiligencingId);

    /**
     * 获取 申请资料
     * @param goodsDiligencingId
     * @return com.cy.dda.model.Result
     */
    Result getGoodsDiligencingApplyInfo(Long goodsDiligencingId);
}
